package com.ssy.lingxi.workflow.service;

import com.ssy.lingxi.workflow.entity.ExternalTaskDefinition;

import java.util.List;

/**
 * 外部任务Dao接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-04-26
 */
public interface IExternalTaskDaoService {
    /**
     * 删除流程
     * @param processKey 流程Key
     */
    void deleteByProcessKey(String processKey);

    /**
     * 保存流程
     * @param processKey 流程Key
     * @param externalTaskDefinitions 流程任务列表
     */
    void saveAll(String processKey, List<ExternalTaskDefinition> externalTaskDefinitions);

    /**
     * 查询流程任务
     * @param processKey 流程Key
     * @return 任务列表
     */
    List<ExternalTaskDefinition> findByProcessKey(String processKey);

    /**
     * 查询启动节点
     * @param processKey 流程的Key
     * @return 流程启动节点
     */
    ExternalTaskDefinition findStartEvent(String processKey);

    /**
     * 查找外部任务节点列表
     * @param processKey 流程Key
     * @param taskName 外部任务名称
     * @param taskType  任务类型
     * @return 外部任务定义
     */
    List<ExternalTaskDefinition> findByProcessKeyAndTaskNameAndTaskType(String processKey, String taskName, Integer taskType);
}
